package com.pureut.storage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.PickingPurchase;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.PickingPurchaseExport;
import com.pureut.storage.vo.OrderReviewVo;
import com.pureut.storage.vo.PickingPurchaseVo;
import com.pureut.storage.vo.PickingRestDbVo;
import com.pureut.storage.vo.UpdateDocVo;

import java.util.List;

/**
 * @author: CM
 * @date: 2022/12/30    13:43
 */

public interface PickingPurchaseService extends IService<PickingPurchase> {


    /**
     * 新增采购退货单
     *
     * @param pickingPurchaseVo
     * @return
     */
    boolean addPurchase(PickingPurchaseVo pickingPurchaseVo) throws Exception;

/**
 * 新增采购退货单(fegin调用)
 * @param pickingPurchaseVo
 * @return
 */
    boolean addPurchaseFeign(PickingPurchaseVo pickingPurchaseVo) throws Exception;

    /**
     * 关结采购退货单
     *
     * @param pickingPurchaseVo
     * @return
     */
    boolean closePurchase(PickingPurchaseVo pickingPurchaseVo);

    /**
     * 修改采购退货单
     *
     * @param pickingPurchaseVo
     * @return
     */
    boolean updatePurchase(PickingPurchaseVo pickingPurchaseVo);

    /**
     * 删除采购退货单
     *
     * @param ids
     * @return
     */
    boolean deletePurchase(String ids);

    /**
     * 查看采购退货单列表
     *
     * @param id
     * @return
     */
    PickingPurchaseDto view(Long id);

    /**
     * 查询列表
     *
     * @param pickingPurchaseVo
     * @return
     */
    List<PickingPurchaseDto> getList(PickingPurchaseVo pickingPurchaseVo);

    /**
     * 查询列表
     *
     * @param pickingPurchaseVo
     * @return
     */
    List<GetPdaDto> getListPda(PickingPurchaseVo pickingPurchaseVo);

    /**
     * 提交审核
     *
     * @param ids
     * @return
     */
    boolean submitPurchase(String ids);

    /**
     * 采购退货
     *
     * @param pickingPurchaseVo
     * @return
     */
    List<PickingPurchaseExport> getInfoExport(PickingPurchaseVo pickingPurchaseVo);

    /**
     * 采购退货Pda出库
     *
     * @param pickingRestDbVo
     * @return
     */
    PickingRestDbDto outPurchase(PickingRestDbVo pickingRestDbVo) throws Exception;


    /**
     * 采购退货拣货完成
     *
     * @param id
     * @return
     */
    boolean subcontractingPurchase(Long id) throws Exception;

    /**
     * 采购退货交接
     *
     * @param pickingRestDbVo
     * @return
     */
    PickingRestHandoverDto purchaseHandover(PickingRestDbVo pickingRestDbVo);

    /**
     * 审核单据
     * @param orderReviewVo
     * @return
     */
    boolean purchaseReview(OrderReviewVo orderReviewVo);

    /**
     * 品质检验单修改仓库单据状态
     * @param updateDocVo
     * @return
     */
    boolean purchaseUpdateStatus(UpdateDocVo updateDocVo);

    /**
     * 采购退货
     * @param id
     * @return
     */
    SchemeDto point(Long id);
}
